﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Windows.Forms;
//using ZoneFiveSoftware.Common.Data.GPS;
//using ZoneFiveSoftware.Common.Visuals;
//using ZoneFiveSoftware.Common.Visuals.Fitness;
//using ZoneFiveSoftware.Common.Visuals.Mapping;

//namespace HermesPlugin.Maps
//{
//    class MapOverlay : IMapOverlay
//    {
//        public event MouseEventHandler Click;

//        public event EventHandler MouseEnter;

//        public event EventHandler MouseLeave;

//        public bool Visible
//        {
//            get
//            {
//                throw new NotImplementedException();
//            }
//            set
//            {
//                throw new NotImplementedException();
//            }
//        }

//        public event EventHandler VisibleChanged;
//    }

//    class MapProjection : IMapProjection
//    {
//        static int pt = 0;

//        public System.Drawing.Point GPSToPixel(ZoneFiveSoftware.Common.Data.GPS.IGPSLocation origin, double zoomLevel, ZoneFiveSoftware.Common.Data.GPS.IGPSLocation gps)
//        {
//            pt++;
//            return new System.Drawing.Point(pt, pt);
//        }

//        public ZoneFiveSoftware.Common.Data.GPS.IGPSLocation PixelToGPS(ZoneFiveSoftware.Common.Data.GPS.IGPSLocation origin, double zoomLevel, System.Drawing.Point pixel)
//        {
//            return new GPSLocation(0, 0);
//        }
//    }

//    class MapControl : IMapControl
//    {
//        ICollection<IMapOverlay> _arrOverlays;

//        public void AddOverlay(IMapOverlay overlay)
//        {
//            _arrOverlays.Add(overlay);
//        }

//        public void AddOverlays(ICollection<IMapOverlay> overlays)
//        {
//            foreach (IMapOverlay overlay in overlays)
//                AddOverlay(overlay);
//        }

//        public bool CanMouseDrag
//        {
//            get
//            {
//                throw new NotImplementedException();
//            }
//            set
//            {
//                //throw new NotImplementedException();
//            }
//        }

//        public ZoneFiveSoftware.Common.Data.GPS.IGPSLocation Center
//        {
//            get
//            {
//                return new GPSLocation(0, 0);
//            }
//            set
//            {
//                //throw new NotImplementedException();
//            }
//        }

//        public event EventHandler CenterMove;

//        public event EventHandler CenterMoveEnd;

//        public event EventHandler CenterMoveStart;

//        public void ClearOverlays()
//        {
//            _arrOverlays.Clear();
//        }

//        public double ComputeZoomToFit(ZoneFiveSoftware.Common.Data.GPS.IGPSBounds bounds)
//        {
//            return 7;//throw new NotImplementedException();
//        }

//        public System.Windows.Forms.Control Control
//        {
//            get { return new Control(); }
//        }

//        public event EventHandler DoubleClick;

//        public double DownloadStatus
//        {
//            get { return 0; }
//        }

//        public event EventHandler DownloadStatusChanged;

//        public MapCursor DraggableCursor
//        {
//            get
//            {
//                throw new NotImplementedException();
//            }
//            set
//            {
//                //throw new NotImplementedException();
//            }
//        }

//        public MapCursor DraggingCursor
//        {
//            get
//            {
//                throw new NotImplementedException();
//            }
//            set
//            {
//                throw new NotImplementedException();
//            }
//        }

//        public event System.Windows.Forms.KeyEventHandler KeyDown;

//        public event System.Windows.Forms.KeyEventHandler KeyUp;

//        public ZoneFiveSoftware.Common.Data.GPS.IGPSBounds MapBounds
//        {
//            get { throw new NotImplementedException(); }
//        }

//        public IMapProjection MapProjection
//        {
//            get { return new MapProjection(); }
//        }

//        public double MaximumZoom
//        {
//            get { return 1; }
//        }

//        public event System.Windows.Forms.MouseEventHandler MouseDown;

//        public event EventHandler MouseEnter;

//        public event EventHandler MouseLeave;

//        public event System.Windows.Forms.MouseEventHandler MouseMove;

//        public event System.Windows.Forms.MouseEventHandler MouseUp;

//        public ICollection<IMapOverlay> Overlays
//        {
//            get { return _arrOverlays; }
//        }

//        public event EventHandler OverlaysChanged;

//        public void PanBy(System.Drawing.Point pixels)
//        {
//            throw new NotImplementedException();
//        }

//        public void PanTo(ZoneFiveSoftware.Common.Data.GPS.IGPSLocation location)
//        {
//            throw new NotImplementedException();
//        }

//        public void RefreshMap()
//        {
//            //throw new NotImplementedException();
//        }

//        public void RemoveOverlay(IMapOverlay overlay)
//        {
//            _arrOverlays.Remove(overlay);
//        }

//        public void RemoveOverlays(ICollection<IMapOverlay> overlays)
//        {
//            foreach (IMapOverlay overlay in overlays)
//                RemoveOverlay(overlay);
//        }

//        public event EventHandler Resize;

//        public void SetLocation(ZoneFiveSoftware.Common.Data.GPS.IGPSLocation center, double zoom)
//        {
//            //throw new NotImplementedException();
//        }

//        public double Zoom
//        {
//            get
//            {
//                return 7;//throw new NotImplementedException();
//            }
//            set
//            {
//                //throw new NotImplementedException();
//            }
//        }

//        public event EventHandler ZoomChanged;

//        public void ZoomIn()
//        {
//            throw new NotImplementedException();
//        }

//        public void ZoomOut()
//        {
//            throw new NotImplementedException();
//        }
//    }

//    class MapControlProvider : IMapControlProvider
//    {
//        const string _id = "E757413D-8C24-4D6F-955C-D8DFF2742809";
//        const string _name = "Blah blah";
//        MapControl _mapControl;

//        public IMapControl CreateControl()
//        {
//            if (_mapControl == null)
//                _mapControl = new MapControl();
//            _mapControl.AddOverlay(new MapOverlay());
//            return _mapControl;
//        }

//        public Guid Id
//        {
//            get { return new Guid(_id); }
//        }

//        public string Name
//        {
//            get { return _name; }
//        }
//    }

//    class ExtendMapControlProviders : IExtendMapControlProviders
//    {
//        public IList<IMapControlProvider> MapControlProviders
//        {
//            get 
//            {
//                return new IMapControlProvider[]{ new MapControlProvider() }; 
//            }
//        }
//    }

//    class RouteControlLayer : IRouteControlLayer
//    {
//        IRouteControlLayerProvider _layerProvider;

//        public RouteControlLayer( IRouteControlLayerProvider layerProvider )
//        {
//            _layerProvider = layerProvider;
//        }

//        public IRouteControlLayerProvider Provider
//        {
//            get { return _layerProvider; }
//        }

//        public int ZOrder
//        {
//            get { return 5; }
//        }
//    }

//    class RouteControlLayerProvider : IRouteControlLayerProvider
//    {
//        public IRouteControlLayer CreateControlLayer(IRouteControl control)
//        {
//            control.MapControlChanged += control_MapControlChanged;
//            return new RouteControlLayer(this);
//        }

//        void control_MapControlChanged(object sender, EventArgs e)
//        {
//            IRouteControl routeControl = sender as IRouteControl;
//            MapControl mapCtrl = routeControl.MapControl as MapControl;
//            if (mapCtrl == null)
//                routeControl.MapControl = new MapControl();
//        }

//        public Guid Id
//        {
//            get { return new Guid("A2B493B0-4F76-4B94-AAEE-F6C2A00F84CF"); }
//        }

//        public string Name
//        {
//            get { return "ccc"; }
//        }
//    }

//    class ExtendRouteControlLayerProviders : IExtendRouteControlLayerProviders
//    {
//        public IList<IRouteControlLayerProvider> RouteControlLayerProviders
//        {
//            get { return new IRouteControlLayerProvider[]{ new RouteControlLayerProvider() }; }
//        }
//    }
//}
